<?php

/**
 * Description of ComponenteHtml
 *
 * @author Cristiana Sasse
 */
abstract class ComponenteHtml {

    private $nome;
    private $cssInline = array();
    private $eventos = array();
    
    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }      

    public function addEvento($evento, $fn) {
        if (!isset($this->eventos[$evento])) {
            $this->eventos[$evento] = array();
        }
        $this->eventos[$evento][] = $fn;
    }
    
    public function addCssInline($propriedade, $valor) {
        $this->cssInline[$propriedade] = $valor;
    }
    
    /**
     * Retorna o HTML do Componente
     * @return String
     */    
    abstract public function getHtml();
    
    protected function getHtmlEventos() {
        $sHtml = '';
        foreach ($this->eventos as $sNomeEvento => $aFn) {
            if ($sHtml != '') {
                $sHtml .= ' ';
            }
            $sFuncs = implode(';', $aFn);
            $sAspas = (strpos($sFuncs, '"') == false) ? '"':'\'';
            $sHtml .= $sNomeEvento.'='.$sAspas.$sFuncs.$sAspas;
        }
        return $sHtml;
    }
    
    protected function getHtmlAtributos(array $aAtributos) {
        $sHtml = '';
        foreach ($aAtributos as $sNome => $sValor) {
            if ($sHtml != '') {
                $sHtml .= ' ';
            }
            if (is_bool($sValor)) {
                if ($sValor === true) {
                    $sHtml .= $sNome;
                }
            }
            else {
                $sHtml .= $sNome.'="'.$sValor.'"';
            }
        }
        return $sHtml;
    }    
    
    protected function getHtmlCssInline() {
        $sHtml = '';
        foreach ($this->cssInline as $sNome => $sValor) {
            if ($sHtml != '') {
                $sHtml .= ';';
            }
            $sHtml .= $sNome.':'.$sValor;
        }
        if ($sHtml) {
            $sHtml = 'style="'.$sHtml.'"';
        }
        return $sHtml;        
    }    
    
}

